﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcademiaDAO;
using AcademiaEntidades;
using System.Data;
using System.Data.SqlClient;
using System.Web.Security;
using System.Security.Principal;

public partial class Publico_Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            txtUsuario.Focus();
        }

    }
    protected void btnIniciarSesion_Click(object sender, EventArgs e)
    {
        try
        {
            bool esUsuario;
            Usuarios user = SeguridadDAO.ValidarUsuario(txtUsuario.Text, txtPassword.Text, out esUsuario);
            //Si el usuario esta autenticado
            if (esUsuario)
            {
                //Tratamiento de estados del usuario que ingresa
                Session["Usuario"] = user;
                //Se obtienen los roles
                string roles = SeguridadDAO.obtenerRoles(txtUsuario.Text);
                //Crear un ticket de autenticacion
                FormsAuthenticationTicket autTicket = new FormsAuthenticationTicket(1, txtUsuario.Text, DateTime.Now,
                    DateTime.Now.AddMinutes(30), false, roles);
                //Encriptar el ticket
                string encrTicket = FormsAuthentication.Encrypt(autTicket);
                //Crea una cookie con el ticket encriptado
                HttpCookie autCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrTicket);
                //Agrega la cookie a la Response
                Response.Cookies.Add(autCookie);
                //Se recupera la url que el usuario trataba de acceder
                string returnUrl = Request.QueryString["ReturnUrl"];
                //Si no existe dicha url redirigimos al usuario a la pagina por defecto o inicio
                if (returnUrl == null)
                    returnUrl = "~/Administracion/Administracion.aspx";
                Response.Redirect(returnUrl);
            }
            else
            {
                lblMensaje.Text = "El usuario y Contraseña son incorrectos";
                lblMensaje.ForeColor = System.Drawing.Color.Red;
            }

        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
            lblMensaje.ForeColor = System.Drawing.Color.Red;
        }

    }
}